home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / wordproc / raved110.arj / REPROF.DOC < prev    next >
Text File  |  1993-08-12  |  111KB  |  1,890 lines

  1.  
  2.  
  3.                           Ravitz Editor 1.10 Profile Assembler
  4.  
  5.                       (C) Copyright Ravitz Software Inc. 1989,1993
  6.  
  7.          Ravitz Software Inc.                              BBS/FAX 606-268-0577
  8.          P.O. Box 25068
  9.          Lexington, KY  40524-5068
  10.          USA                                  Compuserve Cary Ravitz [70431,32]
  11.  
  12.  
  13.          RE Profile Assembler ............................................... 3
  14.          Mnemonic Abbreviations                                               4
  15.          @BEEP - Beep On Error Messages ..................................... 5
  16.          @CMDSAVELEN, @CMDSAVENUM - Command Recall List Qualifiers            5
  17.          @CSRPOSEDIT - Cursor Position After Edit Command ................... 5
  18.          @CSRSPEED, @CSRSPEEDV - Cursor Speed                                 5
  19.          @DATEFORM, @TIMEFORM - Date, Time Format ........................... 5
  20.          @DECOASTKB - Decoast Keyboard?                                       5
  21.          @DEFPRN - Default Printer .......................................... 5
  22.          @DEFSAVETP - Default Save Type                                       5
  23.          @DEFTABHAN - Default Tab Handling .................................. 6
  24.          @DEFWRAP - Default Word Wrap Margins                                 6
  25.          @EDCURFL - Edit Current Ffile....................................... 6
  26.          @EMKBBFPRM - Empty Keyboard Buffer For Prompt?                       6
  27.          @ENHANCEDKB - Enhanced Keyboard Handling ........................... 6
  28.          @EXCHAR, @EXCHARST - Excluded Line Symbols                           6
  29.          @EXFILENAME - Expand File Names .................................... 6
  30.          @FILETP - File Type                                                  7
  31.          @FINDWORD(0..31) - Find Command Word Option ........................ 7
  32.          @GOTOMARGIN - Go To Margin                                           7
  33.          @HICSRFIND - Highlight Cursor After Find/Change .................... 7
  34.          @HORSCRNCOR, @VERSCRNCOR - Horizontal, Vertical Screen Correction    8
  35.          @INITRPLINS - Initial Replace / Insert Mode ........................ 8
  36.          @LNLEN - Line Length                                                 8
  37.          @MENUPOS - Menu Position ........................................... 8
  38.          @MOUSE* - Mouse Configuration Parameters                             8
  39.          @NONDOSMEM - Non-DOS Memory ........................................ 8
  40.          @POLLINPUT - Poll Input?                                             9
  41.          @SCRNWAIT - Color Screen Update Waits .............................. 9
  42.          @SHOWHIDSYS - Show Hidden and System Files in Directory List         9
  43.          @SORTDIR - Sort Directories ........................................ 9
  44.          @SORTSEQ(0..255) - Sorintg Sequence                                  9
  45.          @TBNEWLN - Top Bottom New Line Function ............................ 9
  46.          @TRASHLINES - Number Of Trash Lines                                 10
  47.          Screen Colors And Cursor Type ..................................... 10
  48.          Function Key Definition                                             11
  49.          @specialkey And @specialkal - Special Keys ........................ 11
  50.          Key Assignment Table                                                12
  51.          RE Functions ...................................................... 15
  52.          RE Functions - Basic                                                16
  53.          RE Functions - Cursor, Screen, Window ............................. 17
  54.          RE Functions - Special Characters                                   20
  55.          RE Functions - Configuration ...................................... 20
  56.          RE Functions - Set And Unset Marks                                  20
  57.  
  58.          continued                                                             
  59.  
  60.          RE Functions - Area Mark .......................................... 21
  61.          RE Functions - Line Exclude                                         22
  62.          RE Functions - Programming ........................................ 23
  63.          RE Functions - Values                                               26
  64.          Macros ............................................................ 28
  65.          Startup Macro                                                       29
  66.          Variables ......................................................... 29
  67.          Manipulation of Macro Functions                                     29
  68.          Handy Macro Sequences ............................................. 30
  69.          Querying Modes and Situations                                       31
  70.          Working With a Split Screen ....................................... 31
  71.          Macro Control of Commands                                           32
  72.          Macro Defined Shift Modes ......................................... 33
  73.          Multifunction Macros                                                33
  74.          Getkey and Structured User Input .................................. 34
  75.          Messages, Message Types, and User Defined Messages                  35
  76.          Tab Sets .......................................................... 36
  77.          Help Text                                                           36
  78.          Menus ............................................................. 37
  79.          Panels                                                              38
  80.          Compatibility and Technical Information ........................... 40
  81.  
  82.                                                                             p-3
  83.          RE Profile Assembler -------------------------------------------------
  84.  
  85.            The Ravitz  Editor EXE file can be set up to make  it more effective
  86.            for specific uses.  The program REPROF (file REPROF.EXE) is used  to
  87.            generate personalized versions of RE.
  88.  
  89.            REPROF reads  a  profile  and  creates a  new  RE.EXE.  The  calling
  90.            sequence is "REPROF (profile) (O-newexefile) (F)".  If no profile is
  91.            specified then the default RE.EXE is  created (this  is the  same as
  92.            using REPROF.1 unmodified).  You  can  specify an output  file  with
  93.            O-filename.  It  must end with extension .EXE.  F says to  do a fast
  94.            help  compression instead of the default compression.  The fast help
  95.            compression is not as  effective as the normal help compression, but
  96.            it is useful if you are debugging macros.
  97.  
  98.            REPROF may  be invoked  from the RE command  line using the  current
  99.            session  as  the  profile   by   using   the   command   "di  reprof
  100.            (o-newexefile) (f)".  If there are any errors the cursor will be put
  101.            on the problem line upon return to RE.
  102.  
  103.            The profile contains a  list of modifications.  First are  byte  and
  104.            word patches, macros, messages, and tab sets. The forms of the lines
  105.            are:
  106.  
  107.              B location value value ...      byte patch in the RE patch area
  108.              W location value value ...      word patch in the RE patch area
  109.              X number function function ...  first line of macro
  110.              Y function function ...         continuation of macro
  111.              M number type message           message definition
  112.              T number tabs                   tab set definition.
  113.  
  114.            These are followed by the help text and menus.
  115.  
  116.            Hex numbers  are specified by  prefixing  them with $.  ASCII values
  117.            other  than  0..9, $, ^, &, @, and space may be specified  with that
  118.            character for all  values  and functions (not locations).  Mnemonics
  119.            are  provided  for all  functions  and  locations,  and most values.
  120.            Before the help text,  lines that begin with "*" and blank lines are
  121.            ignored, and  "//" means  that the  following text is a new  profile
  122.            line.  In the help text, lines with a "*" in column one are ignored,
  123.            blank lines are  part of the  help text, and  // is part of the help
  124.            text.
  125.  
  126.            The file  REPROF.1  contains  the  profile  with which  the  default
  127.            version of RE was created.  REPROF.2 contains a  few more  functions
  128.            than  the  default profile and has a shortened help text.  Use these
  129.            profiles as a starting point for creating your own profile.
  130.  
  131.            The size of RE.EXE grows or shrinks to accommodate different profile
  132.            sizes.  The total size of RE.EXE  may not exceed 65536 bytes  (64K).
  133.            (From  56K to  64K can  only be  help  text, but  this  is  rarely a
  134.            limitation.) This leaves at least 18K for your profile.             
  135.  
  136.                                                                             p-4
  137.          Mnemonic Abbreviations -----------------------------------------------
  138.  
  139.            To  keep the location and function  mnemonics short  and consistent,
  140.            this list of abbreviations is used.
  141.  
  142.            ABBREV  FULL WORD       ABBREV  FULL WORD          ABBREV  FULL WORD
  143.  
  144.            a-      alt-            for     forward            ps      position
  145.            ar      area            ins     insert             rep     repeat
  146.            bk      backward        kb      keyboard           rpl     replace
  147.            c-      ctrl-           lf      left               rt      right
  148.            cmd     command         ln      line               s-      shift-
  149.            csr     cursor          md      mode               scrn    screen
  150.            del     delete          mk      mark               ses     session
  151.            def     default         np      numeric keypad     sp      space
  152.            ent     enter           para    paragraph          tp      type
  153.            ex      exclude(d)      pg      page               txt     text     
  154.  
  155.                                                                             p-5
  156.          @BEEP - Beep On Error Messages ---------------------------------------
  157.  
  158.            Normally RE beeps only on severe errors.  To make all error messages
  159.            cause  a  beep,  set  the  byte at @beep  to ^error.  The default is
  160.            ^critical. ^no turns off all beeps.
  161.  
  162.          @CMDSAVELEN, @CMDSAVENUM - Command Recall List Qualifiers ------------
  163.  
  164.            The  byte at @cmdsavelen  specifies the minimum  length of a command
  165.            that will be added to the command recall list. The maximum number of
  166.            commands on the list is specified by the byte at @cmdsavenum.
  167.  
  168.          @CSRPOSEDIT - Cursor Position After Edit Command ---------------------
  169.  
  170.            After a successful Edit command  you  can  have the cursor placed on
  171.            the command line (default) or in  the  text  area.  Set the byte  at
  172.            @csrposedit to ^cmdln or ^txtar to control this.
  173.  
  174.          @CSRSPEED, @CSRSPEEDV - Cursor Speed ---------------------------------
  175.  
  176.            By default the horizontal cursor speed is tripled in typematic mode.
  177.            This is set with B @csrspeed 2. You can slow it to double speed with
  178.            1 and normal speed with 0. Higher numbers also allowed.
  179.  
  180.            @csrspeedv works  like @csrspeed except that it affects the vertical
  181.            cursor speed. 0 is the default.
  182.  
  183.          @DATEFORM, @TIMEFORM - Date, Time Format -----------------------------
  184.  
  185.            The word  at  @dateform  sets  the  date format.  This  defaults  to
  186.            ^MM-DD-YY and  can  also be set to ^YY-MM-DD  and  ^YYYY-MM-DD.  The
  187.            alternate formats are directly sortable.
  188.  
  189.            The byte at @timeform sets the time  format.  The default is ^12hour
  190.            and ^24hour  is the  only alternative.  ^24hour format  is  directly
  191.            sortable.
  192.  
  193.          @DECOASTKB - Decoast Keyboard? ---------------------------------------
  194.  
  195.            Keyboard decoasting  can  be  turned  off  by  changing the  byte at
  196.            @decoastkb to ^no. The default is ^yes.
  197.  
  198.          @DEFPRN - Default Printer --------------------------------------------
  199.  
  200.            The  default printer  is specified by a  Turbo Pascal  string with a
  201.            maximum length of  8.  There should be  no  trailing  blanks  in the
  202.            string.  The length byte  is  at @defprn and the file or device name
  203.            begins  immediately  after this.  The default is  PRN.  To  set  the
  204.            default printer to LPT2 use "B @defprn 4 l p t ^2".
  205.  
  206.          @DEFSAVETP - Default Save Type ---------------------------------------
  207.  
  208.            The byte at @defsavetp sets the default save type.  This is normally
  209.            ^backup, but may be set to ^direct  or ^indirect.  The save type may
  210.            also be set explicitly in each Save command.                        
  211.  
  212.                                                                             p-6
  213.          @DEFTABHAN - Default Tab Handling ------------------------------------
  214.  
  215.            By  default  tabs  are  expanded  on  input  but  there  is  no  tab
  216.            compression on output. This is controlled by the byte at @deftabhan.
  217.            It can  be set to ^tabed(2..63) for  tab expansion  during  the edit
  218.            command,  ^tabedsv(2..63)  for  tab  expansion  during  edit and tab
  219.            compression during save, or  taboff(2..63) for  no tab  expansion or
  220.            compression.  The numeric parameter to these functions is the number
  221.            of columns separating tab columns. It is needed even if you turn tab
  222.            handling off because tab handling can be overridden by edit and save
  223.            options. The default is ^tabed(8).
  224.  
  225.          @DEFWRAP - Default Word Wrap Margins ---------------------------------
  226.  
  227.            The  initial left and right word wrap margins are one byte values at
  228.            @defwrap. These are initially 1 and 255.  The right word wrap margin
  229.            may be individually accessed with @defwraprt.
  230.  
  231.          @EDCURFL - Edit Current Ffile ----------------------------------------
  232.  
  233.            To cause  the Edit command to default to the C option, which says to
  234.            look for a  current file before getting it from the disk, change the
  235.            byte at @edcurfl from ^no to  ^yes.  This option is more accurate if
  236.            you also set @exfilename to ^yes.
  237.  
  238.          @EMKBBFPRM - Empty Keyboard Buffer For Prompt? -----------------------
  239.  
  240.            To  prevent RE from emptying the keyboard  buffer for "Are  you sure
  241.            (Y/N)?" and "Replace file (Y/N)?" change the byte at @emkbbfprm from
  242.            ^yes to ^no.
  243.  
  244.          @ENHANCEDKB - Enhanced Keyboard Handling -----------------------------
  245.  
  246.            By default RE does not look for the enhanced keyboard. If you assign
  247.            functions to keys on the enhanced keyboard (see below), you need  to
  248.            set the byte at @enhancedkb to ^auto to enable these keys.  With the
  249.            enhanced keyboard enabled RE  will still handle  regular  keyboards.
  250.            The default is ^off.
  251.  
  252.            The  reason for not looking for the enhanced keyboard by default  is
  253.            that some resident programs  cause  RE to  think  that the  enhanced
  254.            keyboard is there when it is not.  Outside of such problems, you can
  255.            run on any PC with the enhanced keyboard enabled.
  256.  
  257.          @EXCHAR, @EXCHARST - Excluded Line Symbols ---------------------------
  258.  
  259.            The two characters used to show excluded lines and the start of each
  260.            line in an excluded group are bytes at @exchar  and @excharst.  They
  261.            are defaulted to - and +.
  262.  
  263.          @EXFILENAME - Expand File Names --------------------------------------
  264.  
  265.            The byte at @exfilename is  normally ^no, which says  to leave  file
  266.            names as entered. If you change this to ^yes then file names entered
  267.            with  the Edit and  Name commands will be expanded to include a disk
  268.            and path, and any trailing dot is removed.                          
  269.  
  270.                                                                             p-7
  271.          @FILETP - File Type --------------------------------------------------
  272.  
  273.            By default RE reads and writes  old style ASCII files (CR/LF (13,10)
  274.            at the end  of every  line and EOF (26) at the end of the file).  If
  275.            you set  the  byte at @filetp to ^new, RE reads and writes new style
  276.            ASCII files  (CR/LF  at the end of every line except the last and no
  277.            EOF).  The default  is ^old.  The advantage of old  style  files  is
  278.            compatibility with other programs.  The advantage of new style files
  279.            is that ASCII 26 may be used as a character within the file  and the
  280.            trailing  CR/LF/EOF sequence of old style files does not get  in the
  281.            way on printer control files.
  282.  
  283.            If you set RE  up to use new  style files, it can still read an  old
  284.            style file but its final line will be an ASCII 26. If you leave that
  285.            line and save the file, it will still be a good old style file.
  286.  
  287.            If RE is set up for old  style files, it can read new style files in
  288.            general, but it will stop reading at the first ASCII 26, and it will
  289.            save the file as an old style file.
  290.  
  291.          @FINDWORD(0..31) - Find Command Word Option --------------------------
  292.  
  293.            The characters  that  are considered to be  part of  a word by the W
  294.            (word)  option of the F (find) command, the  uppercase  first letter
  295.            function,  and the ^ifcharinword and ^ifcharnotinword  functions are
  296.            specified by a Turbo Pascal set constant. The set is specified by 32
  297.            bytes at @findword(0..31).  Each character is represented by one bit
  298.            in the set.  Bits that are 1 represent characters that are part of a
  299.            word. Bits that are 0 are word separators.  The default set is #, $,
  300.            %, 0..9, @, A..Z, a..z.  The address of  a bit as  a function of the
  301.            ASCII code that it controls is:
  302.  
  303.              the byte address is @findword(ASCII shr 3)
  304.              the bit within that byte is ASCII and 7.
  305.  
  306.          @GOTOMARGIN - Go To Margin -------------------------------------------
  307.  
  308.            When RE goes to a  specific line with the go to function, or a Find,
  309.            Change, or line number command, it puts the line  one line down from
  310.            the  first line in the text area.  This can be changed to any number
  311.            from 0 to 40. To do this, set the byte at @gotomargin to the desired
  312.            margin.  The default is 1.  RE dynamically limits  the actual  value
  313.            used to half the text area height, so 40 may be a useful value.
  314.  
  315.          @HICSRFIND - Highlight Cursor After Find/Change ----------------------
  316.  
  317.            To cause the  cursor to  be highlighted after a  successful  find or
  318.            change, set the byte at @hicsrfind to  1..126 to set  the  number of
  319.            blinks or ^yes for indefinite blinking. The default is 2.           
  320.  
  321.                                                                             p-8
  322.          @HORSCRNCOR, @VERSCRNCOR - Horizontal, Vertical Screen Correction ----
  323.  
  324.            When  RE does an  automatic horizontal screen  scroll,  it puts  the
  325.            cursor ten spaces into the  screen.  This correction is specified in
  326.            the byte at @horscrncor and may be from 0 to 39. The default is 10.
  327.  
  328.            When RE does  an automatic vertical  screen  scroll during  vertical
  329.            cursor movement, it puts the cursor on the edge of the screen.  This
  330.            correction is specified in the byte at @verscrncor and may be from 0
  331.            to 40. The default is 0. RE dynamically limits the actual value used
  332.            to half the text area height, so you might find 40 a useful value.
  333.  
  334.          @INITRPLINS - Initial Replace / Insert Mode --------------------------
  335.  
  336.            To set  the initial replace / insert mode to insert, change the byte
  337.            at @initrplins to ^ins. The default is ^rpl.
  338.  
  339.          @LNLEN - Line Length -------------------------------------------------
  340.  
  341.            The byte  at @lnlen  specifies the maximum line  length  for RE.  It
  342.            defaults to the maximum of  255 and may be  as low as the  number of
  343.            columns on your screen.  If it is less than this then RE will refuse
  344.            to start.
  345.  
  346.          @MENUPOS - Menu Position ---------------------------------------------
  347.  
  348.            By default (B @menupos  ^auto) menus pop up  at the top or bottom of
  349.            the  screen to avoid  covering the  cursor.  If  you prefer  them to
  350.            always pop up at the bottom, set B @menupos ^bottom.
  351.  
  352.          @MOUSE* - Mouse Configuration Parameters -----------------------------
  353.  
  354.            You can configure RE's mouse handling with these patches:
  355.  
  356.            B @mouse      ^yes / ^no        use mouse?             default ^yes
  357.            B @mousereset ^hard / ^soft     mouse reset type       default ^hard
  358.            B @mousehsen  1..255            mouse ticks/column     default 12
  359.            B @mousevsen  1..255            mouse ticks/line       default 16
  360.  
  361.            The @mousereset patch lets you use a software mouse reset.  This may
  362.            be useful  on  computers  that have very  slow hardware mouse resets
  363.            (some IBM PS/2s).  If you  notice a  two second delay  on startup or
  364.            after a DOS shell, try B @mousereset ^soft.
  365.  
  366.            You can also assign functions to the mouse buttons and movement. See
  367.            KEY ASSIGNMENT TABLE.
  368.  
  369.          @NONDOSMEM - Non-DOS Memory ------------------------------------------
  370.  
  371.            The byte at @nondosmem specifies  what memory between 640K and 1088K
  372.            will be used by  RE.  The default is ^all which includes EMS memory,
  373.            XMS upper memory blocks, and the XMS high memory area.  ^EMS says to
  374.            use just EMS, ^XMS says to use just the XMS areas, and ^none says to
  375.            use only standard DOS memory.                                       
  376.  
  377.                                                                             p-9
  378.          @POLLINPUT - Poll Input? ---------------------------------------------
  379.  
  380.            Normally  RE polls the keyboard input.  This is needed  for the caps
  381.            lock  indicator, cursor highlighting, mouse handling,  and automatic
  382.            keyboard  state panels.  However it uses  up battery  power  on some
  383.            laptop computers.  Set  the  byte at  @pollinput to  ^no to turn off
  384.            polling - this will also shut off the caps lock indicator. Set it to
  385.            ^yes to always do polling.  Set it to ^auto to turn off polling only
  386.            when running on a PC Convertible. It is normally ^yes.
  387.  
  388.            Regardless of how you set @pollinput polling will  be turned  on  if
  389.            you use a  mouse  or  automatic panels.  Also polling  is  always in
  390.            effect while the cursor is highlighted, while RE is doing background
  391.            data defragmentation, and for a half second after each keystroke.
  392.  
  393.            When running  under DESQview RE returns unused  time slices,  so you
  394.            can leave polling on and still get good multitasking.
  395.  
  396.          @SCRNWAIT - Color Screen Update Waits --------------------------------
  397.  
  398.            On  a color  graphics adaptor  RE  waits for retraces to update  the
  399.            screen  to prevent "snow".  Some CGAs do  not  need these waits.  RE
  400.            normally does  not do screen update waits on PCjrs, PC Convertibles,
  401.            PS/2 Model 30s and 80s, EGAs,  VGAs,  MDAs,  any display mode  other
  402.            than 2 or 3, and any mode with  other than  80 columns.  The byte at
  403.            @scrnwait  can  be  set to  ^auto (the  default) to let RE  make the
  404.            decision, ^yes to force waits, or ^no to disable waits.
  405.  
  406.          @SHOWHIDSYS - Show Hidden and System Files in Directory List ---------
  407.  
  408.            Normally  directory  lists  ignore  hidden and  system  file.  Set B
  409.            @showhidsys ^yes to include these files. The default is ^no.
  410.  
  411.          @SORTDIR - Sort Directories ------------------------------------------
  412.  
  413.            RE normally sorts  directory lists.  This can  be  disabled  with  B
  414.            @sortdir ^no.  Subdirectories will be above files, but otherwise the
  415.            order will be the same as with a DIR command. The default is ^yes.
  416.  
  417.          @SORTSEQ(0..255) - Sorintg Sequence ----------------------------------
  418.  
  419.            The default  collating sequence for the Order command (without the C
  420.            option) is contained in an array of bytes from 0 to 255.  This array
  421.            does not contain a sequence of ASCII codes  but instead contains the
  422.            sort value for each  ASCII code.  This  lets you define  a number of
  423.            characters  to have the same  sort value.  The address  of the  sort
  424.            value for ASCII code i is @sortseq(i).
  425.  
  426.          @TBNEWLN - Top Bottom New Line Function ------------------------------
  427.  
  428.            When  you type a character  on the  Top ---  or Bottom --- line,  RE
  429.            inserts a new line, puts the cursor on it, and enters the character.
  430.            This  line can be  added  with  one of four  functions: ^newln(1)  -
  431.            cursor column is unchanged; ^newlnalign(1) - cursor is put under the
  432.            first nonblank of the previous line; ^newlncol1(1) -  cursor goes to
  433.            column 1; or ^newlnww(1)  - cursor  goes  to left word  wrap column.
  434.            This is set with W @tbnewln function. The default ^newln(1).        
  435.  
  436.                                                                            p-10
  437.          @TRASHLINES - Number Of Trash Lines ----------------------------------
  438.  
  439.            Set B @savetrash to the number of lines to have RE keep in the trash
  440.            buffer. This can be 0, which disables the buffer, to 255.
  441.  
  442.          Screen Colors And Cursor Type ----------------------------------------
  443.  
  444.            There  are four sets of screen color  attributes, each with eighteen
  445.            attributes, listed below.  RE  reads the  current  display  mode  on
  446.            startup and after  a  DOS shell and chooses: the mono attributes for
  447.            mode  7; b/w  attributes for modes 0  and  2; lcd attributes for any
  448.            other mode  on  a PC Convertible; and color attributes for  anything
  449.            else. There are no mnemonics for the attribute values.
  450.  
  451.            There is also a  cursor type  byte patch  for  each display  mode  -
  452.            @clrcsrtp,  @b/wcsrtp, @moncsrtp,  and  @lcdcsrtp.  Normally the  PC
  453.            blinking cursor is turned off and moved off the screen - this is set
  454.            with ^noblink (the  default).  If  it is  desirable to have  the  PC
  455.            cursor track the  noblink cursor, use  ^noblink/bios.  The PC cursor
  456.            will still  be turned  off but it will move with the noblink cursor.
  457.            This  may  cause  problems with some resident programs that turn the
  458.            cursor on but do not turn it off when finished. Use ^bios to disable
  459.            the noblink cursor and enable the PC cursor.
  460.  
  461.            ATTRIBUTE             COLOR       B/W         MONO        LCD
  462.                                  PATCH       PATCH       PATCH       PATCH
  463.                                  LOCATION    LOCATION    LOCATION    LOCATION
  464.  
  465.            text                  @clrtxt     @b/wtxt     @montxt     @lcdtxt
  466.            excluded line         @clrextxt   @b/wextxt   @monextxt   @lcdextxt
  467.            area marked text      @clrarmk    @b/warmk    @monarmk    @lcdarmk
  468.            area marked excl      @clrarmkex  @b/warmkex  @monarmkex  @lcdarmkex
  469.            position mark         @clrpsmk    @b/wpsmk    @monpsmk    @lcdpsmk
  470.            insert cursor         @clrinscsr  @b/winscsr  @moninscsr  @lcdinscsr
  471.            replace cursor        @clrrplcsr  @b/wrplcsr  @monrplcsr  @lcdrplcsr
  472.            error message         @clrerrmsg  @b/werrmsg  @monerrmsg  @lcderrmsg
  473.            status line           @clrstln    @b/wstln    @monstln    @lcdstln
  474.            inactive st line      @clriastln  @b/wiastln  @moniastln  @lcdiastln
  475.            command line          @clrcmdln   @b/wcmdln   @moncmdln   @lcdcmdln
  476.            top, bottom line      @clrtopbot  @b/wtopbot  @montopbot  @lcdtopbot
  477.            help title            @clrhlpttl  @b/whlpttl  @monhlpttl  @lcdhlpttl
  478.            help text             @clrhlptxt  @b/whlptxt  @monhlptxt  @lcdhlptxt
  479.            menu title            @clrmenttl  @b/wmenttl  @monmenttl  @lcdmenttl
  480.            menu text             @clrmentxt  @b/wmentxt  @monmentxt  @lcdmentxt
  481.            menu cursor           @clrmencsr  @b/wmencsr  @monmencsr  @lcdmencsr
  482.            menu text 2           @clrmentx2  @b/wmentx2  @monmentx2  @lcdmentx2
  483.  
  484.                                                                            p-11
  485.          Function Key Definition ----------------------------------------------
  486.  
  487.            RE  uses  a translation table  on all function keys.  You may change
  488.            this  table to  add or change function  key  assignments.  To make a
  489.            change: find the address in the KEY ASSIGNMENT TABLE that represents
  490.            the key  of  interest;  find  the  RE  function that represents  the
  491.            function of interest; and assign the code to that address. There are
  492.            many functions that take two or more words.  These can only  be used
  493.            in macros, not in direct key assignments.
  494.  
  495.            For example, to assign  the autoscroll cursor movement  functions to
  496.            the cursor keys, use these profile lines:
  497.  
  498.              W @csrlf &csrlf  // W @csrrt &csrrt
  499.              W @csrup &csrup  // W @csrdn &csrdn
  500.  
  501.          @specialkey And @specialkal - Special Keys ---------------------------
  502.  
  503.            Starting  at @specialkey are nine words that define the special keys
  504.            to use for cursor left, cursor right, cursor up, cursor down, enter,
  505.            esc,  pgup, pgdn,  and help  in the  drawing modes,  when a  message
  506.            requests  that you press enter to continue, for the help system, and
  507.            for menus.  The words  contain  the location in  the key translation
  508.            table of the key to use.  The default set is @csrlf, @csrrt, @csrup,
  509.            @csrdn,  @ent, @esc, @pgup, @pgdn, and @a-f1.  You must be  sure  to
  510.            assign  only locations that contain normal  RE  functions, not ASCII
  511.            codes.  Each location must be unique to be seen.  If other keys have
  512.            the same  function as the  ones assigned here, then they will  cause
  513.            the same action in the help system, etc.
  514.  
  515.            At  @specialkal  is  another  set  of nine  words that are alternate
  516.            values for the special keys.  They should have  the same  values  as
  517.            those  for @specialkey unless you want another key to  have the same
  518.            function. The default set is @mouself, @mousert, @mouseup, @mousedn,
  519.            @mousebtnlf,  @mousebtnrt, @pgup, @pgdn, and @a-f1.  This  lets  the
  520.            mouse enter six of the special keys.                                
  521.  
  522.                                                                            p-12
  523.          Key Assignment Table -------------------------------------------------
  524.  
  525.            KEY               PATCH LOCATION      DEFAULT RE FUNCTION
  526.  
  527.            alt -             @a--                &scrolllfcsr
  528.            alt =             @a-=                &scrollrtcsr
  529.            alt 1             @a-1                &repcurfind
  530.            alt 2             @a-2                &repcurchange
  531.            alt 3             @a-3                &fillnum
  532.            alt 4             @a-4                &blankarrem
  533.            alt 5             @a-5                &fillblock
  534.            alt 6             @a-6                &noop
  535.            alt 7             @a-7                &csrupoutline
  536.            alt 8             @a-8                &csrdnoutline
  537.            alt 9             @a-9                &shiftlf
  538.            alt 0             @a-0                &shiftrt
  539.            alt a             @a-a                &asciicode
  540.            alt b             @a-b                &mkcor
  541.            alt c             @a-c                ©lns
  542.            alt d             @a-d                &delar
  543.            alt e             @a-e                ¯o(125)
  544.            alt f             @a-f                &flow
  545.            alt f1            @a-f1               &help
  546.            alt f2            @a-f2               &noop
  547.            .                 .                   .
  548.            alt f10           @a-f10              &noop
  549.            alt g             @a-g                ¯o(101)
  550.            alt h             @a-h                &hicsr(10)
  551.            alt i             @a-i                &insar
  552.            alt j             @a-j                &rtjustify
  553.            alt k             @a-k                &eraseendln
  554.            alt l             @a-l                &mkln
  555.            alt m             @a-m                &movelns
  556.            alt n             @a-n                &newlnalign(1)
  557.            alt o             @a-o                &overlayar
  558.            alt p             @a-p                &set/re/unpsmk
  559.            alt q             @a-q                &nextses
  560.            alt r             @a-r                &reshow
  561.            alt s             @a-s                &split/join
  562.            alt t             @a-t                &noop
  563.            alt u             @a-u                &unmk
  564.            alt v             @a-v                ¯o(102)
  565.            alt w             @a-w                &setdrawingmd
  566.            alt x             @a-x                &exindentrem
  567.            alt y             @a-y                &recallcmdfor
  568.            alt z             @a-z                ¯o(100)
  569.            back tab          @bktab              &tabbkcurset
  570.            backspace/ctrl h  @bksp               &bksp
  571.            ctrl \            @c-\                28
  572.            ctrl ]            @c-]                29
  573.            ctrl -            @c--                31
  574.            ctrl 2 (null)     @c-2                0
  575.            ctrl 6            @c-6                30
  576.            ctrl a            @c-a                1
  577.            ctrl b            @c-b                2
  578.            ctrl backspace    @c-bksp             &delln
  579.            ctrl c            @c-c                3                             
  580.  
  581.                                                                            p-13
  582.            ctrl d            @c-d                4
  583.            ctrl e            @c-e                5
  584.            ctrl end          @c-end              &bottomoffile
  585.            ctrl ent/ctrl j   @c-ent              10
  586.            ctrl f            @c-f                6
  587.            ctrl f1           @c-f1               &noop
  588.            .                 .                   .
  589.            ctrl f10          @c-f10              &noop
  590.            ctrl g            @c-g                7
  591.            ctrl home         @c-home             &topoffile
  592.            ctrl k            @c-k                11
  593.            ctrl l            @c-l                12
  594.            ctrl left         @c-lf               &scrolllf(1)
  595.            ctrl n            @c-n                14
  596.            ctrl o            @c-o                15
  597.            ctrl p            @c-p                16
  598.            ctrl page down    @c-pgdn             &scrolldn(1)
  599.            ctrl page up      @c-pgup             &scrollup(1)
  600.            ctrl q            @c-q                17
  601.            ctrl r            @c-r                18
  602.            ctrl right        @c-rt               &scrollrt(1)
  603.            ctrl s            @c-s                19
  604.            ctrl t            @c-t                20
  605.            ctrl u            @c-u                21
  606.            ctrl v            @c-v                22
  607.            ctrl w            @c-w                23
  608.            ctrl x            @c-x                24
  609.            ctrl y            @c-y                25
  610.            ctrl z            @c-z                26
  611.            cursor down       @csrdn              &csrdnwrap
  612.            cursor left       @csrlf              &csrlfwrap(1)
  613.            cursor right      @csrrt              &csrrtwrap(1)
  614.            cursor up         @csrup              &csrupwrap
  615.            delete            @delete             &delchar(1)
  616.            end               @end                &csrendln
  617.            enter/ctrl m      @ent                ^macro(106)
  618.            esc/ctrl [        @esc                &csrcmd/txt
  619.            f1                @f1                 ¯o(112)
  620.            f2                @f2                 ¯o(113)
  621.            f3                @f3                 ¯o(114)
  622.            f4                @f4                 ¯o(115)
  623.            f5                @f5                 ¯o(116)
  624.            f6                @f6                 ¯o(117)
  625.            f7                @f7                 ¯o(118)
  626.            f8                @f8                 ¯o(119)
  627.            f9                @f9                 ¯o(120)
  628.            f10               @f10                ¯o(121)
  629.            home              @home               &csrstartln
  630.            insert            @insert             &insrplmd
  631.            mouse down        @mousedn            &csrdn
  632.            mouse left        @mouself            &csrlf
  633.            mouse lf button   @mousebtnlf         ¯o(124)
  634.            mouse mid button  @mousebtnmd         &noop
  635.            mouse right       @mousert            &csrrt
  636.            mouse rt button   @mousebtnrt         &csrcmd/txt
  637.            mouse up          @mouseup            &csrup
  638.            page down         @pgdn               &scrolldncsr                  
  639.  
  640.                                                                            p-14
  641.            page up           @pgup               &scrollupcsr
  642.            shift f1          @s-f1               &noop
  643.            .                 .                   .
  644.            shift f10         @s-f10              &noop
  645.            tab/ctrl i        @tab                &tabcurset
  646.            (E) alt [         @e-a-[              &noop
  647.            (E) alt ]         @e-a-]              &noop
  648.            (E) alt ;         @e-a-;              &noop
  649.            (E) alt '         @e-a-'              &noop
  650.            (E) alt `         @e-a-`              &noop
  651.            (E) alt \         @e-a-\              &noop
  652.            (E) alt ,         @e-a-,              &noop
  653.            (E) alt .         @e-a-.              &noop
  654.            (E) alt /         @e-a-/              &noop
  655.            (E) alt backsp    @e-a-bksp           &noop
  656.            (E) alt del       @e-a-del            &noop
  657.            (E) alt down      @e-a-dn             &noop
  658.            (E) alt end       @e-a-end            &noop
  659.            (E) alt enter     @e-a-ent            &noop
  660.            (E) alt esc       @e-a-esc            &noop
  661.            (E) alt f11       @e-a-f11            &noop
  662.            (E) alt f12       @e-a-f12            &noop
  663.            (E) alt home      @e-a-home           &noop
  664.            (E) alt ins       @e-a-ins            &noop
  665.            (E) alt kp *      @e-a-np-*           &noop
  666.            (E) alt kp -      @e-a-np--           &noop
  667.            (E) alt kp +      @e-a-np-+           &noop
  668.            (E) alt kp /      @e-a-np-/           &noop
  669.            (E) alt kp ent    @e-a-np-ent         &noop
  670.            (E) alt left      @e-a-lf             &noop
  671.            (E) alt pg dn     @e-a-pgdn           &noop
  672.            (E) alt pg up     @e-a-pgup           &noop
  673.            (E) alt right     @e-a-rt             &noop
  674.            (E) alt tab       @e-a-tab            &noop
  675.            (E) alt up        @e-a-up             &noop
  676.            (E) center csr    @e-cencsr           &noop
  677.            (E) ctrl del/.    @e-c-del            &noop
  678.            (E) ctrl dn/2     @e-c-dn             &noop
  679.            (E) ctrl f11      @e-c-f11            &noop
  680.            (E) ctrl f12      @e-c-f12            &noop
  681.            (E) ctrl ins/0    @e-c-ins            &noop
  682.            (E) ctrl kp -     @e-c-np--           &noop
  683.            (E) ctrl kp +     @e-c-np-+           &noop
  684.            (E) ctrl kp /     @e-c-np-/           &noop
  685.            (E) ctrl kp *     @e-c-np-*           &noop
  686.            (E) ctrl kp 5     @e-c-np-5           &noop
  687.            (E) ctrl tab      @e-c-tab            &noop
  688.            (E) ctrl up       @e-c-up             &noop
  689.            (E) f11           @e-f11              &noop
  690.            (E) f12           @e-f12              &noop
  691.            (E) shift f11     @e-s-f11            &noop
  692.            (E) shift f12     @e-s-f12            &noop
  693.  
  694.            (E) in front of  a key means  that  the key is  detected only on  an
  695.            enhanced  keyboard.  These  keys  are all  assigned  no operation by
  696.            default.  To  use  any  of the  (E) keys,  you must enable  enhanced
  697.            keyboard handling with the patch "B @enhancedkb ^auto".             
  698.  
  699.                                                                            p-15
  700.          RE Functions ---------------------------------------------------------
  701.  
  702.            Below are the RE functions, catagorized into:
  703.  
  704.              BASIC
  705.              CURSOR, SCREEN, WINDOW
  706.              SPECIAL CHARACTERS
  707.              CONFIGURATION
  708.              SET AND UNSET MARKS
  709.              AREA MARK
  710.              LINE EXCLUDE
  711.              PROGRAMMING
  712.              VALUES.
  713.  
  714.            Any  function  (except the ASCII characters) prefixed with & instead
  715.            of ^ will be the same function but keyboard decoasted.  For example,
  716.            &scrolllf(1)  scrolls  left  1   column  and  is   decoasted,  while
  717.            ^scrolllf(1) scrolls left 1 column but is not decoasted.
  718.  
  719.            From a macro the & and ^  distinction is different - & means end the
  720.            macro  if  the function  is not successful and ^ means continue  the
  721.            macro regardless of the outcome. See MACROS.
  722.  
  723.            There  is no range checking on  the numeric parameters of functions,
  724.            so be careful.
  725.  
  726.            Functions  that use parameters that are separate tokens may be  used
  727.            only  in macros.  These parameters  should not be  between $F000 and
  728.            $FFFF.  If they are, they may be mistaken for a label or one of  the
  729.            value functions.                                                    
  730.  
  731.                                                                            p-16
  732.          RE Functions - Basic -------------------------------------------------
  733.  
  734.            ^a(0..255)              ASCII 0..255
  735.            ^asciicode              enter ASCII code
  736.            ^bksp                   backspace
  737.            ^blankln                blank current line
  738.            ^clrchgd                clear session changed flag
  739.            ^clrmodadd              clears the line mod and add status bits
  740.            ^defrag                 defragment, display free memory
  741.            ^delchar(1..127)        delete 1..127 characters
  742.            ^delln                  delete non-excluded line
  743.            ^eraseendln             erase end of line
  744.            ^execcmd                execute command
  745.            ^execcmdnorecall        execute command - do not save command for
  746.                                    recall
  747.            ^help                   help
  748.            ^help(1..25)            help starting on page A..Y
  749.            ^hicsr(1..127)          highlight cursor for 1..126 blinks or
  750.                                    indefinitely
  751.            ^insmd                  insert mode
  752.            ^insrplmd               insert mode/replace mode
  753.            ^join                   join lines
  754.            ^newln(1..128)          insert 1..128 new lines, don't change
  755.                                    cursor column
  756.            ^newlnalign(1..128)     insert 1..128 new lines, align cursor
  757.            ^newlncol1(1..128)      insert 1..128 new lines, put cursor in col 1
  758.            ^newlnww(1..128)        insert 1..128 new lines, put cursor in
  759.                                    left word wrap column
  760.            ^overlaycmd             overlay pending command at cursor
  761.                                    Does not work on command line.
  762.            ^overlaydate            overlays date at cursor
  763.            ^overlayfile            overlays file name at cursor
  764.            ^overlaytime            overlays time at cursor
  765.            ^recallcmdbk            recall commands reverse order
  766.            ^recallcmdfor           recall commands
  767.            ^repcurchange           repeats current change (including cmd line)
  768.            ^repcurfind             repeats current find (including cmd line)
  769.            ^repdispchange          repeat displayed change
  770.            ^repdispfind            repeats displayed find
  771.            ^reshow                 reshow
  772.            ^rplmd                  replace mode
  773.            ^setchgd                set session changed flag
  774.            ^setdrawingmdcc         set drawing mode current character
  775.            ^setdrawingmddl         set drawing mode double line
  776.            ^setdrawingmdoff        set drawing mode off
  777.            ^setdrawingmdsl         set drawing mode single line
  778.            ^setshiftmd(0..26)      set shift mode to off, a..z
  779.            ^settabset(1..10)       set tab set to 1..10
  780.            ^setwwlf                set left word wrap margin to cursor pos
  781.            ^setwwlfx x             set left word wrap margin to x
  782.            ^setwwrt                set right word wrap margin to cursor pos
  783.            ^setwwrtx x             set right word wrap margin to x
  784.            ^split                  split line
  785.            ^split/join             split line/join lines
  786.            ^wordcmdln              moves the word at the cursor to cmd line    
  787.  
  788.                                                                            p-17
  789.          RE Functions - Cursor, Screen, Window --------------------------------
  790.  
  791.            ^bottomoffile           to bottom of file
  792.            ^csrcmd/txt             cursor to command line/text
  793.            ^csrcmdln               cursor to command line
  794.            ^csrcolx x              cursor to column x
  795.            ^csrdn                  cursor down without wrap
  796.            ^csrdn(1..78)           cursor down 1..78 lines without wrap
  797.                                    (dynamically limited to 1 screen)
  798.            ^csrdnoutline           cursor down to next line that starts on or
  799.                                    to the left of the cursor
  800.            ^csrdnoutlinemk         cursor down to next line that starts on or
  801.                                    to the left of the cursor ignoring text
  802.                                    outside of current area mark margins
  803.            ^csrdnwrap              cursor down with wrap
  804.            ^csrdnwrap(1..77)       cursor down 1..77 lines with wrap
  805.                                    (cursor stops at line 1, top and bottom of
  806.                                    each window)
  807.            ^csrendln               cursor to end of line
  808.            ^csrlf                  cursor left 1 col without wrap
  809.            ^csrlf(0..127)          cursor left 254,1..127 cols without wrap
  810.            ^csrlfwrap              cursor left 1 col with wrap
  811.            ^csrlfwrap(0..127)      cursor left 254,1..127 cols with wrap
  812.                                    (cursor stops at col 1, right side)
  813.            ^csrnextendpara         cursor to next line after paragraph
  814.            ^csrnextendparamk       crsr to next line after paragraph ignoring
  815.                                    text outside of current area mark margins
  816.            ^csrnextpara            cursor to first line of next paragraph
  817.            ^csrnextparamk          cursor to next paragraph ignoring text
  818.                                    outside of current area mark margins
  819.            ^csrprevendpara         cursor to previous line after paragraph
  820.            ^csrprevendparamk       cursor to prev line after paragraph ignoring
  821.                                    text outside of current area mark margins
  822.            ^csrprevpara            cursor to first line of prev paragraph
  823.            ^csrprevparamk          cursor to previous paragraph ignoring text
  824.                                    outside of current area mark margins
  825.            ^csrreturn              cursor return
  826.            ^csrrt                  cursor right 1 col without wrap
  827.            ^csrrt(0..127)          cursor right 254,1..127 cols without wrap
  828.            ^csrrtwrap              cursor right 1 col with wrap
  829.            ^csrrtwrap(0..127)      cursor right 254,1..127 cols with wrap
  830.                                    (cursor stops at col 1, right side)
  831.            ^csrstartln             cursor to start of line
  832.            ^csrtxt                 cursor to text
  833.            ^csrup                  cursor up without wrap
  834.            ^csrup(1..78)           cursor up 1..78 lines without wrap
  835.                                    (dynamically limited to 1 screen)
  836.            ^csrupoutline           cursor up to next line that starts on or to
  837.                                    the left of the cursor
  838.            ^csrupoutlinemk         cursor up to next line that starts on or
  839.                                    to the left of the cursor ignoring text
  840.                                    outside of current area mark margins
  841.            ^csrupwrap              cursor up with wrap
  842.            ^csrupwrap(1..77)       cursor up 1..77 lines with wrap
  843.                                    (cursor stops at line 1, top and bottom of
  844.                                    each window)                                
  845.  
  846.                                                                            p-18
  847.            ^gotoarmk               go to area mark (top left corner)
  848.            ^gotoarmkbl             go to bottom left corner of area mark
  849.            ^gotoarmkbr             go to bottom right corner of area mark
  850.            ^gotoarmktr             go to top right corner of area mark
  851.            ^gotopsmk               go to position mark
  852.            ^nextses                next edit session
  853.            ^prevses                previous edit session
  854.            ^scrollcenln            scroll current line to center of screen
  855.            ^scrolldn(0..78)        scroll down 0..78 lines - max 1 screen
  856.            ^scrolldn1/2pg          scroll down 1/2 page
  857.            ^scrolldn1/4pg          scroll down 1/4 page
  858.            ^scrolldn1/8pg          scroll down 1/8 page
  859.            ^scrolldn1pg            scroll down 1 page
  860.            ^scrolldncsr            scroll down to cursor
  861.            ^scrolllf(0..127)       scroll left 254,1..127 cols
  862.            ^scrolllfcsr            scroll left to cursor
  863.            ^scrollrt(0..127)       scroll right 254,1..127 cols
  864.            ^scrollrtcsr            scroll right to cursor
  865.            ^scrollup(0..78)        scroll up 0..78 lines - max 1 screen
  866.            ^scrollup1/2pg          scroll up 1/2 page
  867.            ^scrollup1/4pg          scroll up 1/4 page
  868.            ^scrollup1/8pg          scroll up 1/8 page
  869.            ^scrollup1pg            scroll up 1 page
  870.            ^scrollupcsr            scroll up to cursor
  871.            ^splitscrn(6..77)       splits the screen at line 6..77
  872.                                    This function restricts windows to a minimum
  873.                                    of three text lines.
  874.            ^tabauto1ln(0..127)     auto tab looking at current line,
  875.                                    max 254,1..127
  876.            ^tabauto2ln(0..127)     auto tab looking at 2 lines,
  877.                                    max 254,1..127
  878.            ^tabauto3ln(0..127)     auto tab looking at 3 lines,
  879.                                    max 254,1..127
  880.            ^tabauto4ln(0..127)     auto tab looking at 4 lines,
  881.                                    max 254,1..127
  882.            ^tabauto5ln(0..127)     auto tab looking at 5 lines,
  883.                                    max 254,1..127
  884.            ^tabauto6ln(0..127)     auto tab looking at 6 lines,
  885.                                    max 254,1..127
  886.            ^tabauto7ln(0..127)     auto tab looking at 7 lines,
  887.                                    max 254,1..127
  888.            ^tabauto8ln(0..127)     auto tab looking at 8 lines,
  889.                                    max 254,1..127
  890.            ^tabbkauto1ln(0..127)   auto back tab looking at current line,
  891.                                    max 254,1..127
  892.            ^tabbkauto2ln(0..127)   auto back tab looking at 2 lines
  893.                                    max 254,1..127
  894.            ^tabbkauto3ln(0..127)   auto back tab looking at 3 lines
  895.                                    max 254,1..127
  896.            ^tabbkauto4ln(0..127)   auto back tab looking at 4 lines
  897.                                    max 254,1..127
  898.            ^tabbkauto5ln(0..127)   auto back tab looking at 5 lines
  899.                                    max 254,1..127
  900.            ^tabbkauto6ln(0..127)   auto back tab looking at 6 lines
  901.                                    max 254,1..127
  902.            ^tabbkauto7ln(0..127)   auto back tab looking at 7 lines
  903.                                    max 254,1..127                              
  904.  
  905.                                                                            p-19
  906.            ^tabbkauto8ln(0..127)   auto back tab looking at 8 lines
  907.                                    max 254,1..127
  908.            ^tabbkcurset            bk tab - ref current tab set
  909.            ^tabcurset              tab - ref current tab set
  910.            ^topoffile              to top of file
  911.            ^unsplitscrn            unsplit the screen
  912.            ^windowa                make window a active
  913.            ^windowa/b              make other window active
  914.            ^windowb                make window b active                        
  915.  
  916.                                                                            p-20
  917.          RE Functions - Special Characters ------------------------------------
  918.  
  919.            ^0                      0
  920.            ^1                      1
  921.            ^2                      2
  922.            ^3                      3
  923.            ^4                      4
  924.            ^5                      5
  925.            ^6                      6
  926.            ^7                      7
  927.            ^8                      8
  928.            ^9                      9
  929.            ^amp                    &
  930.            ^at                     @
  931.            ^crt                    ^
  932.            ^dlr                    $
  933.            ^sp                     space
  934.  
  935.          RE Functions - Configuration -----------------------------------------
  936.  
  937.            ^enhancedkbauto         enable enhanced keyboard (if attached)
  938.            ^enhancedkboff          disable enhanced keyboard support
  939.            ^setatb/w               installs the b/w attribute set
  940.                                    All future screen updates use the new
  941.                                    attributes and the b/wcsrtp. To rewrite the
  942.                                    screen completely, use ^updatescrn.
  943.            ^setatclr               installs the color attribute set
  944.            ^setatcur               installs the current attribute set
  945.            ^setatlcd               installs the lcd attribute set
  946.            ^setatmon               installs the monochrome attribute set
  947.  
  948.          RE Functions - Set And Unset Marks -----------------------------------
  949.  
  950.            ^mkcol                  mark column of area
  951.            ^mkcolres               mark column of area with mark resizing
  952.            ^mkcor                  mark corner of area
  953.            ^mkcorlm                mark corner of area - always uses last area
  954.                                    mark margin, not word wrap margin, for alt-l
  955.                                    alt-b
  956.            ^mkcorlmres             mark corner of area with mark resizing
  957.            ^mkcorres               mark corner of area with mark resizing
  958.            ^mkln                   mark line of area
  959.            ^mklnres                mark line of area with mark resizing
  960.            ^mkses                  mark entire session
  961.            ^set/re/unpsmk          set/reset/unset position mark
  962.            ^setpsmk                set position mark
  963.            ^unmk                   unmark area
  964.            ^unsetpsmk              unset position mark                         
  965.  
  966.                                                                            p-21
  967.          RE Functions - Area Mark ---------------------------------------------
  968.  
  969.            ^blankar                blank area
  970.            ^blankarnsc             blank area - no on screen check
  971.            ^blankarrem             blank area - remove mark
  972.            ^blankarremnsc          blank area - remove mark - no on scrn check
  973.            ^center                 center
  974.            ^centerrem              center - remove mark
  975.            ^copylns                copy line area
  976.            ^delar                  delete block/line area
  977.            ^delblock               delete block area
  978.            ^delblocknsc            delete block area - no on screen check
  979.            ^delblockrem            delete block area - remove mark
  980.            ^delblockremnsc         del blk area - remove mark - no scrn check
  981.            ^dellns                 delete line area
  982.            ^fillblock              fill with block pattern
  983.            ^fillblockrem           fill with block pattern - remove mark
  984.            ^fillnum                fill with numeric line pattern
  985.            ^fillnumrem             fill with numeric line pattern - remove mark
  986.            ^flow                   flow text
  987.            ^flowextrasp            flow with extra blank at end of sentence
  988.            ^flowextraspkp          flow with extra blank at end of sen, kp mark
  989.            ^flowkp                 flow text, keep mark
  990.            ^flowlist               flow into list
  991.            ^flowlistkp             flow into list, keep mark
  992.            ^insar                  insert area
  993.            ^lfside                 left side
  994.            ^lfsiderem              left side - remove mark
  995.            ^lowercase              lowercase
  996.            ^lowercaserem           lowercase - remove mark
  997.            ^mergeoverlay           merging overlay (overlays only where target
  998.                                    is blank)
  999.            ^movearmk               moves area mark (not contents) to cursor
  1000.            ^movelns                move line area
  1001.            ^overlayar              overlay area
  1002.            ^rtjustify              right justify
  1003.            ^rtjustifyexspkp        rt justify, extra space after sen, keep mark
  1004.            ^rtjustifyextrasp       right justify, extra space after sentence
  1005.            ^rtjustifykp            right justify, keep mark
  1006.            ^rtside                 right side
  1007.            ^rtsiderem              right side - remove mark
  1008.            ^shiftdn                shift down area
  1009.            ^shiftdnrem             shift down area - remove mark
  1010.            ^shiftlf                shift left area
  1011.            ^shiftlfrem             shift left area - remove mark
  1012.            ^shiftrt                shift right area
  1013.            ^shiftrtrem             shift right area - remove mark
  1014.            ^shiftup                shift up area
  1015.            ^shiftuprem             shift up area - remove mark
  1016.            ^uppercase              uppercase
  1017.            ^uppercaserem           uppercase - remove mark
  1018.            ^upperfirst             uppercase first letter
  1019.            ^upperfirstrem          uppercase first letter - remove mark        
  1020.  
  1021.                                                                            p-22
  1022.          RE Functions - Line Exclude ------------------------------------------
  1023.  
  1024.            ^exaddnotmod            exclude added and unmodified
  1025.            ^exaddnotmodrem         exclude added and unmodified - remove mark
  1026.            ^exaddnotmodses         exclude added and unmodified in session
  1027.            ^exall                  exclude all in mark
  1028.            ^exallrem               exclude all in mark - remove mark
  1029.            ^exallses               exclude all in session
  1030.            ^exchildren             excludes children
  1031.            ^exindent               exclude by indentation
  1032.            ^exindentrem            exclude by indentation - remove mark
  1033.            ^exindentses            exclude by indentation entire session
  1034.            ^exln                   exclude one line
  1035.            ^exmkchildren           excludes children ignoring data outside the
  1036.                                    area mark margins
  1037.            ^exnone                 unexclude all in mark
  1038.            ^exnonerem              unexclude all in mark - remove mark
  1039.            ^exnoneses              unexclude all in session
  1040.            ^exnotadd               exclude old lines
  1041.            ^exnotaddrem            exclude old lines - remove mark
  1042.            ^exnotaddses            exclude old lines in session
  1043.            ^exnotmod               exclude unmodified lines
  1044.            ^exnotmodadd            exclude unmodified old lines
  1045.            ^exnotmodaddrem         exclude unmodified old lines - remove mark
  1046.            ^exnotmodaddses         exclude unmodified old lines in session
  1047.            ^exnotmodrem            exclude unmodified lines - remove mark
  1048.            ^exnotmodses            exclude unmodified lines in session
  1049.            ^expara                 exclude by paragraph
  1050.            ^expararem              exclude by paragraph - remove mark
  1051.            ^exparases              exclude by paragraph entire session
  1052.            ^exrestoreses           restores the excluded state for the session
  1053.                                    from the last saved state
  1054.            ^exsaveses              saves the excluded state for the session
  1055.            ^revexlns               reverse excluded lines in area
  1056.            ^revexlnsrem            reverse excluded lines in area - remove mark
  1057.            ^revexlnsses            reverse excluded lines in session
  1058.            ^unexchildren           unexcludes children
  1059.            ^unexfirstln            unexclude first line in group
  1060.            ^unexlastln             unexclude last line in group
  1061.            ^unexmkchildren         unexcludes children ignoring text outside
  1062.                                    the current area mark margins               
  1063.  
  1064.                                                                            p-23
  1065.          RE Functions - Programming -------------------------------------------
  1066.  
  1067.            ^dispmsg(0..63)         displays message 0..63
  1068.                                    See MESSAGE NUMBERS for text/number list.
  1069.            ^dispmsgnum(0..63)      displays message 0..63 followed by var(0)
  1070.            ^endmacro               end macro
  1071.                                    This is automatically supplied by REPROF at
  1072.                                    the end of each macro, but is needed to end
  1073.                                    a macro from inside the macro.
  1074.            ^execfcn                executes function contained in var 0
  1075.            ^getkey                 gets a keystroke and puts it in var 0
  1076.                                    special keys are translated
  1077.                                    (see GETKEY AND STRUCTURED USER INPUT)
  1078.            ^getkeyns               gets a keystroke and puts it in var 0
  1079.                                    special keys are not checked for
  1080.            ^halt                   breaks out of macro system
  1081.            ^if= x y                if x=y
  1082.            ^if> x y                if x>y
  1083.            ^if< x y                if x<y then don't skip next token
  1084.            ^if<= x y               if x<=y
  1085.            ^if>= x y               if x>=y
  1086.            ^if<> x y               if x<>y (not equal)
  1087.            ^if<>0 x                if x<>0 (not equal)
  1088.            ^if=0 x                 if x=0
  1089.            ^ifcharblank            if current character is blank
  1090.            ^ifcharinword           if current char is in a word
  1091.                                    This function checks if the current
  1092.                                    character is in the set of characters used
  1093.                                    with the Find commands Word option.
  1094.            ^ifcharnotblank         if current char is not blank
  1095.            ^ifcharnotinword        if current char is not in a word
  1096.            ^ifcsrcmdln             if cursor on cmd line don't skip next token
  1097.            ^ifcsrtxt               if cursor in text area
  1098.            ^ifeditable             if current line is editable
  1099.            ^ifinsmd                if insert mode
  1100.            ^iflnadd                if current line was added
  1101.            ^iflnblank              if current line or excluded group is blank
  1102.            ^iflnexcluded           if current line is excluded
  1103.            ^iflnmk                 if current line has an area mark
  1104.            ^iflnmod                if current line is modified
  1105.            ^iflnnotadd             if current line was not added
  1106.            ^iflnnotblank           if cur line or excluded group not blank
  1107.            ^iflnnotexcluded        if current line not excluded
  1108.            ^iflnnotmk              if current line does not have an area mark
  1109.            ^iflnnotmod             if current line is not modified
  1110.            ^iflnnotpsmk            if current line does not have an pos mark
  1111.            ^iflnnottopbot          if cursor is not on TOP --- or BOTTOM ---
  1112.            ^iflnpsmk               if current line has a position mark
  1113.            ^iflntopbot             if cursor is on TOP --- or BOTTOM --- line
  1114.            ^ifnoteditable          if current line not editable
  1115.            ^ifnotsuccess           if previous function was not successful
  1116.                                    "Not found", "No files" messages as well as
  1117.                                    any error messages make this true.
  1118.            ^ifpendingcmd x         if uppercase(first nonblank on command
  1119.                                    line) is x (set x to ^0 to catch 0..9)
  1120.            ^ifpendingcmdnot x      if uppercase(first nonblank on command line)
  1121.                                    is not x (set x to ^0 to catch 0..9)        
  1122.  
  1123.                                                                            p-24
  1124.            ^ifrplmd                if replace mode
  1125.            ^ifsuccess              if previous function was successful
  1126.            ^ignoreexlnsmd          sets ignore excluded lines mode on/off
  1127.            ^ignoreexlnsmd1         sets ignore excluded lines mode on only for
  1128.                                    the next non-control function
  1129.            ^ignoreexlnsmdoff       sets ignore excluded lines mode off
  1130.            ^ignoreexlnsmdon        sets ignore excluded lines mode on
  1131.                                    Sets "permanent" ignore excluded lines mode.
  1132.                                    It will be turned on only if there is an
  1133.                                    area mark and will be turned off by any
  1134.                                    functions that do not use this mode. This is
  1135.                                    not used in either REPROF.1 or REPROF.2.
  1136.            ^inhibitscrn            inhibit display updates
  1137.                                    Causing an "Are you sure? (Y/N)" prompt,
  1138.                                    going into help mode, or not being in a
  1139.                                    macro updates the screen and enables screen
  1140.                                    updates.
  1141.            ^jumpbk(1..126)         jump backwards 1..126 macro tokens
  1142.            ^jumpbklb(1..63)        jump backward to label
  1143.            ^jumpfor(1..126)        jump 1..126 macro steps
  1144.            ^jumpforlb(1..63)       jump forward to label
  1145.            ^jumpforlbcycle(1..10)  jump forward to label 1..n
  1146.                                    ^jumpforlbcycle jumps to label 1..n based on
  1147.                                    the number of consecutive macro calls. Each
  1148.                                    leg of the macro must end with ^setprevfcn
  1149.                                    ^macro(*) to continue the cycle. See
  1150.                                    MULTIFUNCTION MACROS.
  1151.            ^keyfcn x               executes the function at address x
  1152.            ^label(1..63)           label noop
  1153.            ^label(*)               label noop catches all jump*lb(1..63)
  1154.            ^macro(0..127)          execute macro 0..127
  1155.            ^macro(*)               execute current macro (this is for use
  1156.                                    with ^setprevfcn, ^setvar, etc.)
  1157.            ^menu(1..39)            displays menu A..Y, 1..9, α, ß, Γ, π, Σ
  1158.                                    (see MENUS)
  1159.            ^noop                   no operation
  1160.            ^panel(1..39)           displays panel A..Y, 1..9, α, ß, Γ, π, Σ
  1161.                                    (see PANELS)
  1162.            ^patchbyte a b          patch byte b at address a
  1163.                                    Do not patch @lnlen. Colors will not be
  1164.                                    updated until after a DOS shell or ^setat*
  1165.                                    function.
  1166.            ^patchbytes(1..63) a b  patches 1..63 bytes starting at a
  1167.            ^patchword a w          patch word w at address a
  1168.            ^patchwords(1..63) a w  patches 1..63 words starting at a
  1169.            ^pause                  pause for about 1 second
  1170.            ^rescsrps               restores cursor position, ins/rpl mode
  1171.            ^resexmd                restores ignore excluded lines mode
  1172.            ^resfindchange          restores find, change strings, options
  1173.            ^resseschg              restores session chgd state
  1174.            ^savecsrps              saves cursor position, insert/replace
  1175.                                    mode, session changed flag, find/change
  1176.                                    variables, ignore excluded lines mode flag
  1177.            ^setprevfcn x           set previous function variable to x
  1178.            ^suppressays            suppress "Are you sure?" or "Replace file?"
  1179.                                    on next fcn                                 
  1180.  
  1181.                                                                            p-25
  1182.            ^updatescrn             update screen, allow updates
  1183.                                    This function is needed to turn the screen
  1184.                                    on before a macro is finished or to update
  1185.                                    the screen colors after ^setat*. If a macro
  1186.                                    ends with the screen disabled, a complete
  1187.                                    screen update is done automatically.
  1188.            ^updatescrninh          update screen but keep inhibited
  1189.                                    This function may be used to update the
  1190.                                    screen with a new permanent panel without
  1191.                                    the user seeing anything.
  1192.            ^varadd(0..15) x        var(0..15) := var(0..15) + x
  1193.                                    X should be less than $F000.
  1194.            ^varand(0..15) x        var(0..15) := var(0..15) and x
  1195.            ^vardiv(0..15) x        var(0..15) := var(0..15) div x
  1196.            ^varmul(0..15) x        var(0..15) := var(0..15) * x
  1197.            ^varor(0..15) x         var(0..15) := var(0..15) or x
  1198.            ^varset(0..15) x        var(0..15) := x
  1199.            ^varsub(0..15) x        var(0..15) := var(0..15) - x
  1200.            ^vartype(0..15)         types character representation of low byte
  1201.                                    of variable 0..15
  1202.  
  1203.            ^if  functions that evaluate to false skip one macro  token.  If the
  1204.            desired  true function uses more than one token,  use the reverse if
  1205.            function and jump around the function. For example, instead of
  1206.  
  1207.              ^if=0 ^var(1) ^varset(0) 1
  1208.  
  1209.            which will not work correctly, use
  1210.  
  1211.              ^if<>0 ^var(1) ^jumpfor(3) ^varset(0) 1.                          
  1212.  
  1213.                                                                            p-26
  1214.          RE Functions - Values ------------------------------------------------
  1215.  
  1216.            For any functions that have parameters that are separate tokens, the
  1217.            following  functions may be used as parameters.  The  variables that
  1218.            contain the values cannot be directly written - they must be updated
  1219.            by  RE functions that affect them, for example setting an area  mark
  1220.            sets armkcol1 and armkcol2.
  1221.  
  1222.            ^@mac x                 the patch offset of macro x
  1223.            ^armkcol1               left area mark column
  1224.            ^armkcol2               right area mark column
  1225.                                    These are not accurate unless there is an
  1226.                                    area mark.
  1227.            ^armkmd                 ^sp, a, or á (032, 097, or 160)
  1228.            ^armknotonscrn          0 if area mark is on the screen
  1229.            ^armkses                session pointer of area mark session
  1230.                                    Pointers change during database
  1231.                                    defragmentation - across macros, DOS
  1232.                                    shells, area mark functions.
  1233.            ^armkwd                 area mark width
  1234.            ^bytepatch a            byte at patch address a
  1235.            ^chgd                   0 if the session is unchanged
  1236.            ^curchar                character under cursor
  1237.                                    This value is not accurate unless the
  1238.                                    current line is editable.
  1239.            ^curcol                 current cursor file column
  1240.            ^curlinenum             current file line number
  1241.            ^currow                 current screen row (1..80)
  1242.            ^curscol                current cursor screen column
  1243.            ^curses                 session pointer of current session
  1244.            ^curwindow              current window (0, 1 for a, b)
  1245.            ^drawingmd              drawing mode (0..3)
  1246.            ^inarmk                 0 if the cursor is not in the area mark
  1247.            ^maxlnwidth             maximum line length
  1248.            ^msgnum                 current message number
  1249.            ^psmkcol                position mark column
  1250.                                    This is not accurate unless there is a
  1251.                                    position mark.
  1252.            ^psmkses                session pointer of position mark session
  1253.                                    This is not accurate unless there is a
  1254.                                    position mark.
  1255.            ^insrplmdval            0 for replace, 1 for insert
  1256.            ^otherwinses            session pointer of the inactive window
  1257.            ^scrncol                leftmost column on screen
  1258.            ^scrnheight             virtual screen height in lines
  1259.                                    (active window, status, command)
  1260.            ^scrnheightfull         full screen height in lines
  1261.                                    (windows, perm panel, status, command)
  1262.            ^scrnsplit              number of text lines in window a or 0 if
  1263.                                    there is no split
  1264.            ^scrnwidth              screen width in columns
  1265.            ^shiftmd                shift mode
  1266.            ^var(0..15)             value of variable 0..15
  1267.            ^wordpatch a            word at patch address a
  1268.            ^wordwrapcol1           left word wrap column
  1269.            ^wordwrapcol2           right word wrap column                      
  1270.  
  1271.                                                                            p-27
  1272.            @*                      numeric value of any patch location
  1273.            ^*                      numeric value of any function except
  1274.                                    those noted here
  1275.  
  1276.            For example:
  1277.  
  1278.              ^if= ^var(0) ^var(1)              compares var(0) and var(1)
  1279.              ^varset(2) ^curchar               sets var(2) to the current
  1280.                                                character
  1281.              ^varset(1) ^bytepatch @defwraprt  sets var(1) to the default right
  1282.                                                word wrap margin.               
  1283.  
  1284.                                                                            p-28
  1285.          Macros ---------------------------------------------------------------
  1286.  
  1287.            RE  lets  you define up  to 127  macros numbered 1 to 127.  To put a
  1288.            macro in in an RE profile, use the line
  1289.  
  1290.              X macronumber function function ...
  1291.  
  1292.            and the macro may be continued on a new line with
  1293.  
  1294.              Y function function ...
  1295.  
  1296.            Macros are nestable to a  depth of 16 calls.  No checking is done to
  1297.            insure that the stack does not overflow - it is  up  to  you to  not
  1298.            exceed  this  maximum.  If  a macro calls another macro and the next
  1299.            function in the first macro is ^endmacro then this is  equivalent to
  1300.            jumping  to  the new macro rather than calling it and no extra stack
  1301.            space is taken.
  1302.  
  1303.            To use macro number i, assign the function ¯o(i) to a key.
  1304.  
  1305.            The functions are listed in RE FUNCTIONS.  When functions are called
  1306.            from  a macro, if a function is prefixed with & instead of ^ then if
  1307.            the  function  causes an  error  message, the  macro  is prematurely
  1308.            ended. If not then the macro continues despite the message. Messages
  1309.            that do not cause the macro to end, even if the function is prefixed
  1310.            with &  are  Changed,  Default disk/dir changed, Enter  ASCII  code,
  1311.            Found,  Free memory  low, Free  paragraphs,  Numeric  fill overflow,
  1312.            Printed, Saved.
  1313.  
  1314.            Some functions  are considered  control functions and cannot  affect
  1315.            the current position  or  database.  These  functions do  not update
  1316.            messages,  reset  cyclic functions, or  reset  the  "are  you sure?"
  1317.            continued  feature  (this lets  you do  repeated destructive  shifts
  1318.            without being prompted each time). The functions are:
  1319.  
  1320.              ^endmacro                ^jump..           ^patch..
  1321.              ^getkey..                ^keyfcn           ^setprevfcn
  1322.              ^halt                    ^label            ^updatescrn
  1323.              ^if..                    ^macro            ^var.. (except vartype)
  1324.              ^ignoreexlnsmd1          ^menu
  1325.              ^inhibitscrn             ^panel
  1326.  
  1327.            So if you  construct a macro of  just these  functions with a single
  1328.            core operation, any dependance of the core operation on the previous
  1329.            function is transferred through the control functions. The following
  1330.            macro  shifts the contents of the area mark left if  in  insert mode
  1331.            and right if in replace mode, and repeated destructive shifts do not
  1332.            cause "are you sure?" prompts.
  1333.  
  1334.              X 60 ^ifinsmd &shiftlf ^ifrplmd &shiftrt.
  1335.  
  1336.            To use  draw mode  from inside a  macro trace  out the  drawing with
  1337.            ^keyfcn @csrup, ^keyfcn @csrdn, ^keyfcn @csrlf, and ^keyfcn @csrrt. 
  1338.  
  1339.                                                                            p-29
  1340.          Startup Macro --------------------------------------------------------
  1341.  
  1342.            Macro 0 is  the startup  macro.  When RE has finished reading in its
  1343.            initial file, before user input is allowed, macro 0 is called. Macro
  1344.            0 is just like any other macro except for this.
  1345.  
  1346.            In REPROF.1 and REPROF.2 macro 0 does nothing.
  1347.  
  1348.          Variables ------------------------------------------------------------
  1349.  
  1350.            RE has 16 word (unsigned 2 byte) variables numbered 0..15.  Variable
  1351.            i  is set with  ^varset(i)  x,  and accessed  as  a  parameter  with
  1352.            ^var(i).  You  can  add  to  a  variable  (^varadd(i)  x),  subtract
  1353.            (^varsub), multiply (^varmul), divide (^vardiv), or (^varor), or and
  1354.            (^varand).  The low byte of a  variable may be typed, as  if entered
  1355.            from the keyboard, with ^vartype(i).
  1356.  
  1357.            Variable 0 is special.  It is used by the functions: ^execfcn  which
  1358.            executes   the  function  represented  by   the  value   of  var(0);
  1359.            ^menu(0..39)  which  processes  a menu  and returns  the  result  in
  1360.            var(0); ^getkey which gets a keyboard entry and puts the  associated
  1361.            function into  var(0),  translating  special  keys  into  ^jumpforlb
  1362.            functions; ^getkeyns  which is like ^getkey except that special keys
  1363.            are not translated;  and ^dispmsgnum(0..63) which displays a message
  1364.            followed by the value of var(0).
  1365.  
  1366.            To  set var(1) to  the value of  var(4)  use ^varset(1) ^var(4).  To
  1367.            compare var(1) to var(4) use ^if= ^var(1) ^var(4).
  1368.  
  1369.          Manipulation of Macro Functions --------------------------------------
  1370.  
  1371.            Each token in an  RE macro is one word, with an associated mnemonic.
  1372.            If a function has separate parameters (^setwwrtx x for example) then
  1373.            the parameter is a separate token and a variable may be used for the
  1374.            parameter.    If   the   function   has   an    attached   parameter
  1375.            (^setshiftmd(0..26)  for example) then that parameter is part of the
  1376.            function token and must be a constant.  If you need such a parameter
  1377.            to be variable  you can generate the required function in the macro.
  1378.            Set  variable  0 to the function with a 0 parameter, add the desired
  1379.            parameter to variable  0, and then execute the function in  variable
  1380.            0. For example to do the function ^setshiftmd(^var(1)) (which is not
  1381.            allowed) use this code:
  1382.  
  1383.              ^varset(0) ^setshiftmd(0) ^varadd(0) ^var(1) ^execfcn             
  1384.  
  1385.                                                                            p-30
  1386.          Handy Macro Sequences ------------------------------------------------
  1387.  
  1388.            Here are a few useful macro sequences.  The first two put the cursor
  1389.            on the top and bottom of the current window.
  1390.  
  1391.              ^if= ^currow 1 ^csrdn ^if<> ^currow ^scrnheight ^csrdnwrap(77)
  1392.              ^if= ^currow 3 ^jumpfor(3) ^csrcmdln ^csrdn
  1393.  
  1394.            These put the cursor at the left and right side of the screen.
  1395.  
  1396.              ^if<> ^curcol 1 ^csrlfwrap(0)
  1397.              ^if<> ^curcol ^scrnwidth ^csrrtwrap(0)
  1398.  
  1399.            Here are traditional page up and page down sequences.
  1400.  
  1401.              ^savecsrps ^scrollup1pg ^rescsrps
  1402.              ^savecsrps ^scrolldn1pg ^rescsrps
  1403.  
  1404.            Also  see  REPROF.MAC.  This is a set  of macros that  may be useful
  1405.            including:
  1406.  
  1407.              rotating permanent panels
  1408.              record and playback keystrokes
  1409.              move marked area
  1410.              box the perimeter of the area mark
  1411.              delete blank lines in the area mark
  1412.              load multiple files on startup
  1413.              tab functions that insert or delete spaces in insert mode.        
  1414.  
  1415.                                                                            p-31
  1416.          Querying Modes and Situations ----------------------------------------
  1417.  
  1418.            There  are many  direct ^if  statements available for  querying  the
  1419.            state of RE, but there  also are many  possible queries that require
  1420.            looking at  specific  variables.  Here  is  a  list  of  useful  ^if
  1421.            commands.
  1422.  
  1423.            ^if<>0 ^inarmk                if cursor is in area mark
  1424.            ^if<>0 ^chgd                  if session has been changed
  1425.            ^if<>0 ^armknotonscrn         if area mark is not in the window
  1426.                                          (assumes an area mark exists)
  1427.            ^if<>0 ^psmkses               if there is a position mark
  1428.            ^if=  ^psmkses ^curses        if the current session has a pos mark
  1429.            ^if<> ^armkmd ^sp             if there is an area mark
  1430.            ^if=  ^armkmd a               if there is a completed area mark
  1431.            ^if=  ^armkses ^curses        if area mark is in the current session
  1432.                                          (assumes an area mark exists)
  1433.            ^if= ^shiftmd 3               if shift mode is 3
  1434.            ^if<>0 ^drawingmd             if in one of the drawing modes
  1435.            ^if= ^curcol 34               if the cursor is in column 34
  1436.            ^if= ^curcol ^armkcol1        if cursor is in the left area mark col
  1437.                                          (assumes an area mark exists)
  1438.            ^if= ^curchar S               if the current character is S
  1439.            ^if<>0 ^scrnsplit             if screen is split
  1440.  
  1441.          Working With a Split Screen ------------------------------------------
  1442.  
  1443.            To  a macro (and to RE internally) a split screen window  appears to
  1444.            be just an ordinary small screen.  That is, the cursor row (^currow)
  1445.            moves sequentially  1, 3, 4, ..., ^scrnheight.  But you can  get the
  1446.            actual cursor  row by using ^scrnsplit.  To put  the cursor's actual
  1447.            screen row in var(1), use:
  1448.  
  1449.              ^varset(1) ^currow
  1450.              ^if= ^curwindow 0 ^jumpfor(3) ^varadd(1) ^scrnsplit
  1451.  
  1452.            Here is a function  that splits the  screen at the  current line, or
  1453.            unsplits the screen if it is already split.
  1454.  
  1455.              X 1
  1456.              Y ^if=0 ^scrnsplit ^jumpfor(3) ^unsplitscrn ^endmacro
  1457.              Y ^ifcsrcmdln ^jumpfor(4) ^varset(0) ^currow ^jumpfor(7)
  1458.              Y ^varset(0) ^scrnheight ^varadd(0) 2 ^vardiv(0) 2
  1459.              Y ^varadd(0) ^splitscrn(1) ^execfcn
  1460.  
  1461.            The ^splitscrn function  will not allow a window  of less than three
  1462.            text lines. If you unsplit the screen, put up a permanent panel, and
  1463.            then split it again at the same  line (the recommended procedure for
  1464.            displaying a permanent panel), the position of the split may change.
  1465.            And if you change the  number  of lines  on  the screen  from  a DOS
  1466.            shell, RE may reconfigure the screen  split (or even unsplit it)  to
  1467.            insure that each window has three lines.                            
  1468.  
  1469.                                                                            p-32
  1470.          Macro Control of Commands --------------------------------------------
  1471.  
  1472.            The enter key may be re-programmed to examine  pending  commands and
  1473.            take  specific action  based on  that information.  In REPROF.1  and
  1474.            REPROF.2 the mouse and keyboard enter functions are:
  1475.  
  1476.            * mouse enter
  1477.              X 105 ^macro(124) ^if=0 ^var(0) ^endmacro
  1478.              Y     ^macro(112)
  1479.            * keyboard enter
  1480.              X 106 ^macro(124) ^if=0 ^var(0) ^endmacro
  1481.              Y     ^csrreturn
  1482.  
  1483.            Macro 124  looks for a  pending  command  and  executes  it, setting
  1484.            var(0) to 0 if it found a command or 1 if not.
  1485.  
  1486.            * execute pending command and set var(0) to 0 or 1 if no command
  1487.              X 124 ^varset(0) 1
  1488.              Y     ^ifcsrtxt ^jumpfor(4)
  1489.              Y     ^iflnblank ^endmacro ^jumpfor(7)
  1490.              Y     ^ifpendingcmd F ^jumpfor(4)
  1491.              Y     ^ifpendingcmdnot C ^endmacro
  1492.              Y     ^execcmd ^varset(0) 0
  1493.  
  1494.            You  can replace macro 124 to change the way it decides if a command
  1495.            is pending or the way that it executes the command. An example is:
  1496.  
  1497.            * execute pending command and set var(0) to 0 or 1 if no command
  1498.              X 124 ^varset(0) 1
  1499.              Y     ^ifcsrtxt ^jumpfor(3)
  1500.              Y     ^iflnblank ^endmacro
  1501.              Y     ^ifpendingcmd F ^jumpforlb(2)
  1502.              Y     ^ifpendingcmd C ^jumpforlb(2)
  1503.              Y     ^ifcsrtxt ^endmacro
  1504.              Y     ^ifpendingcmdnot S ^jumpfor(9)
  1505.              Y       ^varset(0) ^curses           // * save-clear mod add flags
  1506.              Y       &execcmd
  1507.              Y       ^if= ^curses ^var(0) ^clrmodadd
  1508.              Y       ^jumpforlb(1)
  1509.              Y     ^ifpendingcmdnot E ^jumpfor(7)
  1510.              Y       &execcmd                     // * edit-exclude at col 3
  1511.              Y       ^csrtxt ^csrrt(2) ^exindentses ^csrcmdln
  1512.              Y       ^jumpforlb(1)
  1513.              Y     ^ifpendingcmdnot ^0 ^jumpfor(3)
  1514.              Y       ^execcmdnorecall             // * don't save line num cmds
  1515.              Y       ^jumpforlb(1)
  1516.              Y     ^label(2) ^execcmd
  1517.              Y     ^label(1) ^varset(0) 0                                      
  1518.  
  1519.                                                                            p-33
  1520.          Macro Defined Shift Modes --------------------------------------------
  1521.  
  1522.            You  can  set  the  user  shift  mode  with  the  ^setshiftmd(0..26)
  1523.            function.  0 is the default.  1..26 are displayed on top of the caps
  1524.            lock indicator as a..z.
  1525.  
  1526.            Here is a macro that rotates between shift modes a, b, and off
  1527.  
  1528.            X 1 ^if<>0 ^shiftmd ^jumpfor(3) ^setshiftmd(1) ^endmacro
  1529.            Y   ^if<> ^shiftmd 1 ^jumpfor(3) ^setshiftmd(2) ^endmacro
  1530.            Y   ^setshiftmd(0)
  1531.  
  1532.            And  to use  the shift modes,  here is  a macro  that  looks at  the
  1533.            shift mode and does one of three different functions.
  1534.  
  1535.            X 2 ^if<>0 ^shiftmd ^jumpforlb(1)
  1536.            Y   functions for shift mode off ...
  1537.            Y   ^endmacro
  1538.            Y   ^label(1) ^if<> ^shiftmd 1 ^jumpforlb(1)
  1539.            Y   functions for shift mode 1 ...
  1540.            Y   ^endmacro
  1541.            Y   ^label(1) ^if<> ^shiftmd 2 ^endmacro
  1542.            Y   functions for shift mode 2 ...
  1543.  
  1544.            You can also use the patch functions to reset key assignments when a
  1545.            new shift mode is set, so you could reassign the entire function key
  1546.            set based on shift mode.
  1547.  
  1548.            If  you  use shift modes, it is a good idea to set a permanent panel
  1549.            for each  mode.  This  makes it  obvious  what  mode  is current and
  1550.            provides some help for that mode. See PANELS.
  1551.  
  1552.          Multifunction Macros -------------------------------------------------
  1553.  
  1554.            The  RE  macro language  makes  it easy  to  create  macros  that do
  1555.            different  functions on consecutive calls.  This  feature is used in
  1556.            the default profile on the  alt-v key to produce the center function
  1557.            on the first press, left side on the  second, and right side  on the
  1558.            third.  Similar (though  some a little more complex) macros are used
  1559.            to rotate drawing modes (alt-z), move to the various  marks (alt-g),
  1560.            and   exclude  and  unexclude   children   (alt-6).   Here   is  the
  1561.            center/left/right macro.
  1562.  
  1563.              X 102 ^jumpforlbcycle(3)
  1564.              Y     ^label(1) ¢er ^jumpfor(6)
  1565.              Y     ^label(2) &lfside ^jumpfor(3)
  1566.              Y     ^label(3) &rtside
  1567.              Y     ^setprevfcn ^macro(*)
  1568.  
  1569.            ^jumpforlbcycle  jumps to one of  label 1..3  based on the number of
  1570.            consecutive calls to macro 102 (any number up to 10 may be used). To
  1571.            keep  the  cycle going, before the macro is called a second time, RE
  1572.            must think that the most recent function was that macro. ^setprevfcn
  1573.            ^macro(*) just before ending the macro does this.                   
  1574.  
  1575.                                                                            p-34
  1576.          Getkey and Structured User Input -------------------------------------
  1577.  
  1578.            ^getkey  gets a  key from the  user  and puts  the function  that is
  1579.            assigned to that key in variable 0.  If any  of the special keys are
  1580.            pressed then they are returned as ^jumpforlb(i) where i is:
  1581.  
  1582.              1 for cursor left         4 for cursor down        7 for page up
  1583.              2 for cursor right        5 for enter              8 for page down
  1584.              3 for cursor up           6 for escape             9 for help
  1585.  
  1586.            ^getkeyns is the  same as getkey  except  that special  keys are not
  1587.            checked for.
  1588.  
  1589.            This  lets you create structured data input macros.  An example is a
  1590.            macro that gets a user selection from vertical list.  The cursor  is
  1591.            left on the selected line and variable  0 contains ^jumpforlb(5) for
  1592.            enter or ^jumpforlb(6) for escape.
  1593.  
  1594.              M 50 ^msg Select line                   // * define message 50
  1595.              X 1
  1596.              Y ^csrtxt ^csrlf(0)
  1597.              Y ^label(1) ^dispmsg(50) ^getkey
  1598.              Y ^if< ^var(0) ^jumpforlb(3) ^jumpbklb(1)
  1599.              Y ^if> ^var(0) ^jumpforlb(9) ^jumpbklb(1)
  1600.              Y ^execfcn
  1601.              Y ^label(3) ^csrup         ^jumpbklb(1) // * csrup
  1602.              Y ^label(4) ^csrdn         ^jumpbklb(1) // * csrdn
  1603.              Y ^label(7) ^keyfcn @pgup  ^jumpbklb(1) // * pgup
  1604.              Y ^label(8) ^keyfcn @pgdn  ^jumpbklb(1) // * pgdn
  1605.              Y ^label(9) ^help(4)       ^jumpbklb(1) // * help pg 4
  1606.              Y ^label(5) ^ifnoteditable ^jumpbklb(1) // * enter
  1607.              Y ^label(6) ^dispmsg(0)                 // * esc
  1608.  
  1609.            This macro  puts up  a panel and, on the next  keystroke, removes it
  1610.            and executes the keystroke.
  1611.  
  1612.              X 1 ^panel(34) ^getkeyns ^updatescrn ^execfcn
  1613.  
  1614.            If you need to look for a specific key, rather  than a function, the
  1615.            only way to  do it is to  compare the function returned from ^getkey
  1616.            with the function assigned to that  key.  If the function on the key
  1617.            is  not unique then other keys can  trigger  the same response.  You
  1618.            need to and off $80  from the key function because that  is  used by
  1619.            the keyboard routine and then removed. For example, to get a key and
  1620.            check to see if it was alt-s:
  1621.  
  1622.              ^getkey
  1623.              ^varset(1) ^wordpatch ^@a-s ^varand(1) $FF7F
  1624.              ^if= ^var(0) ^var(1)
  1625.  
  1626.            Functions $4000 to $4FFF are not used by RE. You can assign these to
  1627.            keys, use ^getkey or ^getkeyns to get the function, and have a macro
  1628.            interpret them.  This may be useful when getting  user input that is
  1629.            only  valid when a specific  panel  is  displayed.  Or  $80 with the
  1630.            number to enable keyboard decoasting.                               
  1631.  
  1632.                                                                            p-35
  1633.          Messages, Message Types, and User Defined Messages -------------------
  1634.  
  1635.            NUMBER      MESSAGE         TYPE    NUMBER      MESSAGE         TYPE
  1636.  
  1637.             0 A   wd-    ht-            $18    24 Printed                   $08
  1638.             1 Changed                   $08    25 Incorrect number          $05
  1639.             2 Found                     $08    26 DOS memory error          $2F
  1640.             3 Line(s) too long          $1D    27 Drive not ready           $07
  1641.             4 Saved                     $28    28 Disk write protected      $07
  1642.             5 Insufficient free memory  $25    29 Incorrect option          $05
  1643.             6 Line(s) split             $1F    30 Incorrect file name       $05
  1644.             7 Not found                 $0C    31 Incorrect Find string     $05
  1645.             8 Saved - file replaced     $28    32 Incorrect Change string   $05
  1646.             9 Memory full - Data Lost   $07    33 Are you sure? (Y/N)       $01
  1647.            10 Parameter too long        $05    34 Mark is not in session    $05
  1648.            11 Area mark already exists  $05    35 Free paragraphs           $08
  1649.            12 No area mark              $05    36 Numeric fill overflow     $08
  1650.            13 reserved                  $05    37 Cannot use display mode   $25
  1651.            14 No mark                   $05    38 Defragmenting memory      $00
  1652.            15 Free memory low           $08    39 Replace file? (Y/N)       $00
  1653.            16 Incorrect cursor position $05    40 Press Enter to continue   $00
  1654.            17 Disk/device error         $07    41 Default disk/dir changed  $09
  1655.            18 Mark is not on screen     $05    42 No files                  $0C
  1656.            19 Enter ASCII code          $00    43 Changed > 10000           $08
  1657.            20 Incorrect command         $05    44 Found > 10000             $08
  1658.            21 Insufficient disk space   $07    45 user defined message      $00
  1659.            22 Not in ring               $05    .  .                         .
  1660.            23 Insert A:, press Enter    $00    63 user defined message      $00
  1661.  
  1662.            The message type bytes are at @MSGTP(0..63). The bits of the message
  1663.            type bytes are:
  1664.  
  1665.             $1 - red (and beep if "B @beep ^error" is set)
  1666.             $2 - beep (unless "B @beep ^no" is set)
  1667.             $4 - ends a macro if displayed by an & prefixed function
  1668.                  This bit is also queried by the ^ifsuccess function.
  1669.             $8 - this message indicates a command or function was successful If
  1670.                  a command finishes with this message then it is stored in  the
  1671.                  recall list and the command line is blanked.
  1672.            $10 - this message indicates an edit command was successful
  1673.                  An Edit command starts a new session and reads in  a file.  If
  1674.                  the  file read finishes with this message then the new session
  1675.                  is kept, otherwise the new session is removed from memory.
  1676.            $20 - if RE ends with this message, display it in DOS
  1677.  
  1678.            The message type mnemonics are ^critical  ($07), ^error ($05),  ^msg
  1679.            ($00).
  1680.  
  1681.            You may define messages 45..63 (and rewrite 0..44). To set a message
  1682.            use  the line "M number type message" anywhere in the profile before
  1683.            the help  text.  Number is  the message number, type  is the message
  1684.            type (^critical, ^error, ^msg, or a number), and the message text is
  1685.            up to 25 characters. For example: "M 45 ^msg Macro complete".
  1686.  
  1687.            Use   the   function   ^dispmsg(0..63)   to   display   a   message.
  1688.            ^dispmsgnum(0..63) displays  a message  followed  by  the  value  of
  1689.            variable 0.                                                         
  1690.  
  1691.                                                                            p-36
  1692.          Tab Sets -------------------------------------------------------------
  1693.  
  1694.            You may define  up to ten tabs sets numbered  1..10.  Set 1  must be
  1695.            defined since it is the default that RE sets up on entry.
  1696.  
  1697.            To define a tab set, use the line
  1698.  
  1699.              T setnumber column column ...
  1700.  
  1701.            To choose an automatic tab function, set  column 1 to 0, column 2 to
  1702.            the  number  of lines above the current line to  look at (0..7), and
  1703.            column 3 to the maximum number of columns to move (1..254).
  1704.  
  1705.            The default tab set is an automatic tab function: "T 0 4 8".
  1706.  
  1707.            The  tabs sets are selected with the  T command and are used only by
  1708.            the ^lftabcurset and ^rttabcurset functions.
  1709.  
  1710.          Help Text ------------------------------------------------------------
  1711.  
  1712.            The help text follows all patches, macro, tab sets, and messages. It
  1713.            starts with a special line containing @  in column one.  This is the
  1714.            bottom line of each help  screen (if there is room for it).  In  the
  1715.            default profile it is blank. Then for each of up to 25 help screens,
  1716.            is the title line beginning with "A".."Y".  Following the title line
  1717.            is  the body of the screen, in columns 2 through 81.  The help pages
  1718.            must be in  order and use consecutive page letters starting  with A.
  1719.            Set B @lastpghelp to the last page of the help text. For example:
  1720.  
  1721.              B @lastpghelp C
  1722.  
  1723.              @F1,Esc-Quit help  A..C-Page A..C  PgDn-Next Page ..
  1724.              AHelp Menu
  1725.               A  Help Menu
  1726.               B  Basic Commands
  1727.               C  Basic Functions
  1728.              BBasic Commands
  1729.               To execute a command, enter the command on the command line, ..
  1730.               .
  1731.               .
  1732.              CBasic Functions
  1733.               Alt-A          Enters an ASCII code
  1734.               .
  1735.               .
  1736.  
  1737.            Note that Z is not a valid help page letter.                        
  1738.  
  1739.                                                                            p-37
  1740.          Menus ----------------------------------------------------------------
  1741.  
  1742.            Menus  are the  same  as help  screens except they are limited to  9
  1743.            lines  (plus  the title) and the help  screen letter  is extended to
  1744.            cover  39  screens/menus.  The menu  letter  must not  overlap  help
  1745.            screens  and must follow the last help screen (help A..R, menus U..5
  1746.            in REPROF.PR1).  The menu letter may be A..Y, 1..9, α, ß, Γ, π, or Σ
  1747.            and these are referred to as 1..39 in the menu function.
  1748.  
  1749.            The  menu  item fields are columns 2..21, 22..41, 42..61, and 62..81
  1750.            on each line.  These  fields are numbered  11,21,31,41, 12,22,32,42,
  1751.            etc.  If the first character in  a field is nonblank then that field
  1752.            has an item.  If any character in  the field  up to the first  blank
  1753.            (ASCII 32 but  not ASCII 0 or  255) is a capital letter, then it may
  1754.            be selected by the user with that letter.
  1755.  
  1756.            You must write a macro to control a menu. The menu is displayed with
  1757.            ^menu(1..39) and the menu routine has control  until a user response
  1758.            is  made.  When control is given back to the macro the user response
  1759.            is in variable 0.  It may be any RE function except ASCII 0..255 and
  1760.            ^noop.  If the  response  is one of the menu items  then variable  0
  1761.            contains a ^jumpforlb(item) function.  If the response is one of the
  1762.            last four special keys (see @SPECIALKEY - SPECIAL  KEYS) then escape
  1763.            gives  ^jumpforlb(6), page up gives  ^jumpforlb(7), page  down gives
  1764.            ^jumpforlb(8), and help gives ^jumpforlb(9). Any other key gives the
  1765.            function assigned to that key. The response in var(0) may be queried
  1766.            to filter some responses and/or executed.
  1767.  
  1768.            The menu routine always displays the menu, even if ^inhibitscrn mode
  1769.            is on and leaves the display in ^inhibitscrn mode.  ^updatescrn will
  1770.            reset this as will ending the macro.
  1771.  
  1772.            The  menu  function  is  a  control  function  and does  not  update
  1773.            messages, the "are you sure?" continued feature, etc.
  1774.  
  1775.            Here is a sample menu and a macro to control it:
  1776.  
  1777.              NGeneral Functions
  1778.               mark block resize   set position mark   single draw
  1779.               mark line resize    unset position mk   double draw
  1780.               mark column resize
  1781.  
  1782.              X 114 ^label(1) ^menu(14)
  1783.              Y ^if= ^var(0) ^macro(*) ^endmacro  // * toggles menu on/off
  1784.              Y ^execfcn ^endmacro                // * executes response which
  1785.                                                  // * may be a ^jumpforlb
  1786.              Y ^label(6) ^endmacro               // * esc
  1787.              Y ^label(7) ^macro(113) ^endmacro   // * pgup
  1788.              Y ^label(8) ^macro(115) ^endmacro   // * pgdn
  1789.              Y ^label(9) ^help(8) ^endmacro      // * help page 8
  1790.              Y ^label(11) &mkcorres ^endmacro
  1791.              Y ^label(12) &mklnres ^endmacro
  1792.              Y ^label(13) &mkcolres ^endmacro
  1793.              Y ^label(21) &setpsmk ^endmacro
  1794.              Y ^label(22) &unsetpsmk ^endmacro
  1795.              Y ^label(31) &setdrawingmdsl ^endmacro
  1796.              Y ^label(32) &setdrawingmddl                                      
  1797.  
  1798.                                                                            p-38
  1799.          Panels ---------------------------------------------------------------
  1800.  
  1801.            Panels  are the  same as menus (and  may be mixed with them)  except
  1802.            that they  are displayed  with  ^panel(0..39)  and  once  displayed,
  1803.            control  is  immediately  returned  to the  caller.  The display  is
  1804.            inhibited.  You can get user input with ^getkey or ^getkeyns. Panels
  1805.            may  be  any number of lines, but are dynamically  cut to fit within
  1806.            the screen height - 5 lines.
  1807.  
  1808.            Here  is  a sample  panel  and  control  macro  that  displays  some
  1809.            information  and at the next  keystroke  redisplays  the  screen and
  1810.            executes the keystroke. This assumes special key definitions @csrlf,
  1811.            @csrrt, @csrup, @csrdn, @ent, @esc, @pgup, @pgdn, and @a-f1.
  1812.  
  1813.              OInformation Panel
  1814.               any information ...
  1815.               any information ...
  1816.               any information ...
  1817.  
  1818.              X 115 ^panel(15) ^getkey ^updatescrn ^execfcn ^endmacro
  1819.              Y ^label(1) ^keyfcn @csrlf ^endmacro
  1820.              Y ^label(2) ^keyfcn @csrrt ^endmacro
  1821.              Y ^label(3) ^keyfcn @csrup ^endmacro
  1822.              Y ^label(4) ^keyfcn @csrdn ^endmacro
  1823.              Y ^label(5) ^keyfcn @ent   ^endmacro
  1824.              Y ^label(6) ^keyfcn @esc   ^endmacro
  1825.              Y ^label(7) ^keyfcn @pgup  ^endmacro
  1826.              Y ^label(8) ^keyfcn @pgdn  ^endmacro
  1827.              Y ^label(9) ^keyfcn @a-f1
  1828.  
  1829.            If you don't want to intercept any special keys then you can use:
  1830.  
  1831.              X 115 ^panel(15) ^getkeyns ^updatescrn ^execfcn
  1832.  
  1833.            One panel may be made permanent by setting B @permpanel to the panel
  1834.            number.  Permanent  panels  are  displayed  during  editing  but are
  1835.            overwritten  by  DOS  shells,  help text,  and  generally  by  menus
  1836.            (depending  on  the  cursor  position),   but   they  are   restored
  1837.            automatically after this.
  1838.  
  1839.            This panel may be changed  with a macro but you must insure that the
  1840.            cursor is not covered by the new panel and that  window B  still has
  1841.            at least three text lines. To set a permanent panel which may have a
  1842.            different height than the current permanent panel use this code.  It
  1843.            unsplits the screen,  displays  the  new  panel,  and  resplits  the
  1844.            screen. This avoids all potential problems.
  1845.  
  1846.              y ^inhibitscrn ^savecsrps ^csrcmdln
  1847.              y ^varset(0) ^scrnsplit ^if<>0 ^var(0) ^unsplitscrn
  1848.              y ^patchbyte @permpanel (panel#) ^updatescrninh
  1849.              y ^if=0 ^var(0) ^jumpfor(4) ^varadd(0) ^splitscrn(2) ^execfcn
  1850.              y ^rescsrps ^updatescrn                                           
  1851.  
  1852.                                                                            p-39
  1853.            The  automatic permanent panel feature sets  the  permanent panel to
  1854.            one of four panels based on the  state  of the keyboard.  The  first
  1855.            panel is for the unshifted state, the second for when the alt key is
  1856.            pressed, the  third  for  when the control key  is pressed, and  the
  1857.            fourth for when the shift key is pressed.
  1858.  
  1859.            To use this feature, set B @autopanel and B @permpanel to the number
  1860.            of the first automatic panel. The next three panels (sequential) are
  1861.            for alt, ctrl, and shift.  Each of the panels should  have  the same
  1862.            height - the keyboard  routine rewrites the panels  blindly and does
  1863.            not worry about the details needed for  different sized panels.  The
  1864.            byte  at @apdelay specifies a delay  before the  display of the alt,
  1865.            ctrl, and shift panels  in 1/18 second (one PC timer tick).  Setting
  1866.            this to approximately 9 helps prevent excessive screen changes.
  1867.  
  1868.            RE  updates  the @permpanel byte with the current automatic panel as
  1869.            it polls the keyboard.
  1870.  
  1871.            These panels will not overwrite  help,  menus,  or transient panels,
  1872.            but  will  overwrite any current  permanent  panel.  If  you let  it
  1873.            overwrite a permanent panel, do not  let it take up  more space than
  1874.            the current panel, because the keyboard routine  will not be able to
  1875.            handle the situation if the cursor or window B is covered by the new
  1876.            panel.                                                              
  1877.  
  1878.                                                                            p-40
  1879.          Compatibility and Technical Information ------------------------------
  1880.  
  1881.            REPROF will run  on any IBM  compatible MS-DOS computer, in a memory
  1882.            space of 96K, under any standard environment.
  1883.  
  1884.            REPROF is a pure Turbo Pascal program. All input and output uses the
  1885.            Turbo  Pascal library.  Screen writes use  Turbo  Pascal's  standard
  1886.            write functions.  REPROF takes  no interrupts beyond  those taken by
  1887.            the Turbo Pascal startup code.
  1888.  
  1889.            REPROF was  written by Cary Ravitz and compiled with Borland's Turbo
  1890.            Pascal 6.0 and Turbo Assembler 2.0.